package com.CST.service.cb;

import com.CST.common.api.ResultObject;
import com.CST.dto.cb.CountInComeDTO;
import com.CST.dto.cb.DateDTO;
import com.CST.entity.cb.Direct;
import com.CST.vo.cb.ReportCostAccountVO;

import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;

public interface IAmortizationDataService {
    ResultObject listAmortizationDataByDate(DateDTO dateDTO);

    ResultObject listAmortizationDataByPDeptCode(DateDTO dateDTO, String pDeptCode);

    ResultObject listCountInCome(CountInComeDTO countInComeDTO);

    List<ReportCostAccountVO> listAmortizationDataWithAccount(DateDTO dateDTO);

    List<Direct> noAmortizationDept(DateDTO dateDTO);

    /**
     * 科室成本分析
     * 数据整理和归档方式类似于医院各剋是全成本表（会计分类汇总）
     * 区别在于：不需要根据AccountCode group by
     * 需要：时间范围+父级科室
     * @param dateDTO
     * @param pDeptCode
     * @return
     */
    List<ReportCostAccountVO> deptCostAnalysis(DateDTO dateDTO, String pDeptCode);

    /**
     * 传入时间+科室
     * 获取科室成本的分析的详情
     * 根据account进行分组和计算
     * @return
     */
    List<ReportCostAccountVO> listDeptCostAnalysis(DateDTO dateDTO, String deptCode);

    /**
     * 导出
     * @param response
     */
    void exportExcel2(HttpServletResponse response, DateDTO dateDTO) throws IOException;

    /**
     * 导出
     * @param response
     */
    void exportExcel3(HttpServletResponse response, DateDTO dateDTO) throws IOException;

    /**
     * 导出
     * @param response
     */
    void exportExcel4(HttpServletResponse response, CountInComeDTO comeDTO) throws IOException;

    /**
     * 导出
     * @param response
     */
    void exportExcel6(HttpServletResponse response, DateDTO dateDTO) throws IOException;

    /**
     * 未分摊科室导出
     * @param response
     * @param dateDTO
     */
    void exportExcel7(HttpServletResponse response, DateDTO dateDTO);
}
